package com.solcoo.service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import com.solcoo.dao.MenuDao;
import com.solcoo.dao.MenuTypeDao;
import com.solcoo.json.MenuTypeJson;
import com.solcoo.pojo.MenuType;

@Service
public class MenuTypeService {

	@Resource
	private MenuTypeDao menuTypeDao;
	@Resource
	private MenuDao menuDao;
	
	
	public Map<String, Object> addMenuType(MenuType menuType) throws Exception {
		if("".equals(menuType.getName().trim())) {
			return setFailInfo("名称不能为空");
		}
		if("下架".equals(menuType.getName().trim())) {
			return setFailInfo("名称不能为“下架”");
		}
		
		boolean result = false;
		
		boolean isExist = menuTypeDao.isExist(menuType);
		
		if ( isExist )
			return setFailInfo("菜单类型已存在");
		
		result = menuTypeDao.addMenuType(menuType);
		
		if ( !result )
			return setFailInfo("菜单类型新增失败");
		
		return this.listMenuType(menuType.getShanghuid());
	}
	
	
	public Map<String, Object> deleteMenuType(MenuType menuType) throws Exception {
		
		boolean result = false;
		
		menuDao.updateMenuByMenuType(menuType);
		result = menuTypeDao.deleteMenuTypeById(menuType.getId());
		
		if ( !result )
			return setFailInfo("菜单类型删除失败");
		
		Map<String, Object> map = new HashMap<String, Object>();
		
		map.put("result", true);
		map.put("msg", "菜单类型删除成功");
		
		return map;
	}
	
	
	public Map<String, Object> updateMenuType(MenuType menuType) throws Exception {
		boolean result = false;
		
		result = menuTypeDao.updateMenuType(menuType);

		if ( !result )
			return setFailInfo("菜单类型修改失败");
		
		Map<String, Object> map = new HashMap<String, Object>();
		
		map.put("result", true);
		map.put("msg", "菜单类型修改成功");
		
		return map;
	}
	
	
	public Map<String, Object> getMenuType(Long id) throws Exception {
		MenuType menuType = null;
		
		MenuTypeJson menuTypeJson = null;
		
		menuType =  menuTypeDao.getMenuType(id);
		
		menuTypeJson = new MenuTypeJson();
		
		menuTypeJson.setId(menuType.getId() + "");
		menuTypeJson.setShanghuid(menuType.getShanghuid() + "");
		menuTypeJson.setName(menuType.getName());
		
		Map<String, Object> map = new HashMap<String, Object>();
		
		map.put("menuType", menuTypeJson);
		map.put("result", true);
		map.put("msg", "菜单类型获取成功");
		
		return map;	
	}
	
	
	public Map<String, Object> listMenuType(Long shanghuid) throws Exception {
		List<MenuTypeJson> resultList = new ArrayList<MenuTypeJson>();
		
		MenuTypeJson menuTypeJson = null;;
		
		List<MenuType> list = menuTypeDao.getMenuTypeListByShanghuid(shanghuid);
		
		MenuType menuType = null;
		
		for (int i = 0; i < list.size(); i++) {
			menuType = list.get(i);
			
			menuTypeJson = new MenuTypeJson();
			
			menuTypeJson.setId(menuType.getId() + "");
			menuTypeJson.setShanghuid(menuType.getShanghuid() + "");
			menuTypeJson.setName(menuType.getName());
			
			resultList.add(menuTypeJson);
		}
		
		Map<String, Object> map = new HashMap<String, Object>();
		
		map.put("menuTypeList", resultList);
		map.put("result", true);
		map.put("msg", "菜单类型列表获取成功");
		
		return map;
	}
	
	/**
	 * 设置错误信息
	 * @param failInfo
	 * @return
	 */
	private Map<String, Object> setFailInfo(String failInfo) {
		Map<String, Object> map = new HashMap<String, Object>();
		
		map.put("result", false);
		map.put("failMsg", failInfo);
		
		return map;
	}

}
